home *** CD-ROM | disk | FTP | other *** search
/ Aminet 22 / Aminet 22 (1997)(GTI - Schatztruhe)[!][Dec 1997].iso / Aminet / dev / src / ConfigFileSrc.lha / ConfigFileSrc12 / Library / Funcs / Clear.c < prev    next >
Encoding:
Text File  |  1997-10-02  |  4.0 KB  |  189 lines

  1. /*
  2. **        $PROJECT: ConfigFile.library
  3. **        $FILE: Clear.c
  4. **        $DESCRIPTION: cf_Clear#?() functions
  5. **
  6. **        (C) Copyright 1996-1997 Marcel Karas
  7. **             All Rights Reserved.
  8. */
  9.  
  10. IMPORT struct ExecBase    * SysBase;
  11.  
  12. /****** configfile.library/cf_ClearArgList ***********************************
  13. *
  14. *   NAME
  15. *        cf_ClearArgList -- Clears all argument and item nodes of a
  16. *                           group node.
  17. *
  18. *   SYNOPSIS
  19. *        cf_ClearArgList(GrpNode);
  20. *                        A0
  21. *
  22. *        VOID cf_ClearArgList(CFGroup *);
  23. *
  24. *   FUNCTION
  25. *        This function clears all argument and item nodes of a group node.
  26. *
  27. *   INPUTS
  28. *        GrpNode - The group node for the argument list.
  29. *
  30. *   SEE ALSO
  31. *        cf_ClearGrpList(), cf_ClearItemList()
  32. *
  33. ******************************************************************************
  34. *
  35. */
  36.  
  37. LibCall VOID cf_ClearArgList ( REGA0 iCFGroup * GrpNode )
  38. {
  39.     iCFArgument    *ArgNode;
  40.     iCFArgument    *NextArgNode;
  41.     APTR             MemPool;
  42.  
  43.     FuncDe(bug("cf_ClearArgList($%08lx)\n{\n", GrpNode));
  44.  
  45.     MemPool = GrpNode->Header->MemPool;
  46.  
  47.     if ( ArgNode = cf_LockArgList (GrpNode) )
  48.     {
  49.         GrpNode->Header->Flags |= CF_HFLG_CHANGED;
  50.         
  51.         ArgNode = (iCFArgument *) (GrpNode->ArgList.mlh_Head);
  52.  
  53.         while ( NextArgNode = (iCFArgument *) (ArgNode->NextArg) )
  54.         {
  55.             DelArg (MemPool, ArgNode);
  56.  
  57.             ArgNode = NextArgNode;
  58.         }
  59.  
  60.         cf_UnlockArgList (GrpNode);
  61.     }
  62.  
  63.     FuncDe(bug("}\n"));
  64. }
  65.  
  66. /****** configfile.library/cf_ClearGrpList ***********************************
  67. *
  68. *   NAME
  69. *        cf_ClearGrpList -- Clears all group/argument/item nodes.
  70. *
  71. *   SYNOPSIS
  72. *        cf_ClearGrpList(Header);
  73. *                        A0
  74. *
  75. *        VOID cf_ClearGrpList(CFHeader *);
  76. *
  77. *   FUNCTION
  78. *        This function clears all group/argument/item nodes.
  79. *
  80. *   INPUTS
  81. *        Header - Pointer to the CFHeader structure.
  82. *
  83. *   SEE ALSO
  84. *        cf_ClearArgList(), cf_ClearItemList()
  85. *
  86. ******************************************************************************
  87. *
  88. */
  89.  
  90. LibCall VOID cf_ClearGrpList ( REGA0 iCFHeader * Header )
  91. {
  92.     iCFGroup    *GrpNode;
  93.     iCFGroup    *NextGrpNode;
  94.     APTR         MemPool;
  95.  
  96.     FuncDe(bug("cf_ClearGrpList($%08lx)\n{\n", Header));
  97.  
  98.     MemPool = Header->MemPool;
  99.  
  100.     if ( GrpNode = cf_LockGrpList (Header) )
  101.     {
  102.         Header->Flags |= CF_HFLG_CHANGED;
  103.  
  104.         GrpNode = (iCFGroup *) (Header->GroupList.mlh_Head);
  105.  
  106.         while ( NextGrpNode = (iCFGroup *) (GrpNode->NextGrp) )
  107.         {
  108.             DelGrp (MemPool, GrpNode);
  109.  
  110.             GrpNode = NextGrpNode;
  111.         }
  112.  
  113.         cf_UnlockGrpList (Header);
  114.     }
  115.  
  116.     FuncDe(bug("}\n"));
  117. }
  118.  
  119. /****** configfile.library/cf_ClearItemList **********************************
  120. *
  121. *   NAME
  122. *        cf_ClearItemList -- Clears all item nodes of an argument node.
  123. *
  124. *   SYNOPSIS
  125. *        cf_ClearItemList(ArgNode);
  126. *                         A0
  127. *
  128. *        VOID cf_ClearItemList(CFArgument *);
  129. *
  130. *   FUNCTION
  131. *        This function clears all item nodes of an argument node.
  132. *
  133. *   INPUTS
  134. *        ArgNode - The argument node for item list.
  135. *
  136. *   EXAMPLE
  137. *        CFGroup    * myGrpNode;
  138. *        CFArgument * myArgNode;
  139. *
  140. *        ...
  141. *        myArgNode = cf_NewArgument (myGrpNode, "ExampleArgument");
  142. *        myItemNode = cf_NewString (myArgNode, "ExampleString");
  143. *        myItemNode = cf_NewNum (myArgNode, 463256);
  144. *        cf_ClearItemList (myArgNode);
  145. *        ...
  146. *
  147. *        In the CF file:
  148. *
  149. *        [ExampleGroup]
  150. *        ...
  151. *        ExampleArgument=
  152. *        ...
  153. *
  154. *   SEE ALSO
  155. *        cf_ClearArgList(), cf_ClearGrpList()
  156. *
  157. ******************************************************************************
  158. *
  159. */
  160.  
  161. LibCall VOID cf_ClearItemList ( REGA0 iCFArgument * ArgNode )
  162. {
  163.     iCFItem    *ItemNode;
  164.     iCFItem    *NextItemNode;
  165.     APTR         MemPool;
  166.  
  167.     FuncDe(bug("cf_ClearItemList($%08lx)\n{\n", ArgNode));
  168.  
  169.     MemPool = ArgNode->GrpNode->Header->MemPool;
  170.  
  171.     if ( ItemNode = cf_LockItemList (ArgNode) )
  172.     {
  173.         ArgNode->GrpNode->Header->Flags |= CF_HFLG_CHANGED;
  174.  
  175.         ItemNode = (iCFItem *) (ArgNode->ItemList.mlh_Head);
  176.  
  177.         while ( NextItemNode = (iCFItem *) (ItemNode->NextItem) )
  178.         {
  179.             DelItem (MemPool, ItemNode);
  180.  
  181.             ItemNode = NextItemNode;
  182.         }
  183.  
  184.         cf_UnlockItemList (ArgNode);
  185.     }
  186.  
  187.     FuncDe(bug("}\n"));
  188. }
  189.